<?php
include 'readDB.php';
include 'checks.php';
$entidad=$_GET['object'];
$objectId=$_GET['id'];
$params = $_GET['params'];
$fields = $_GET['fields'];
$paramsObj = json_decode($params,true);
$fieldsObj = json_decode($fields,true);


if (isset($entidades[$entidad])){ //CHEQUEA SI LA ENTIDAD EXISTE
	$checkFields=checkFields($entidades[$entidad],$paramsObj);
	if ($checkFields==""){
			if ($objectId!=null){
				$query=makeUpdateQuery($entidades[$entidad],$paramsObj,$entidad,$objectId);				
			}else{
				$query=makeUpdateQueryByFields($entidades[$entidad],$paramsObj,$entidad,$fieldsObj);
			}
//  			echo $query;
			mysql_query($query) or mysql_errno($conn);
			$msj= "Object Updated";
			$ok=true;
	}else{
			$msj= "Field " . $checkFields . " not exists for object " .  $entidad;
			$ok=false;
	}
}else{
		$msj= "Object " . $entidad . "not exists";
		$ok=false;
}

$ret=array("ok" => $ok,"msj" => $msj);
echo json_encode($ret);

function makeUpdateQuery($entidad,$pars,$object,$id){
	$pre="UPDATE " . $object . " SET ";
    $post="id = " . $id;
	$keys=array_keys($pars);	
	for ($x=0;$x<count($keys);$x++){
		$fieldName=$entidad[$keys[$x]]["name"];
		$fieldValue=$pars[$fieldName];		
		$dateB=(strstr($entidad[$keys[$x]]["type"], 'date')!=""); // SI ES DATE
		$stringB=(strstr($entidad[$keys[$x]]["type"], 'varchar')!=""); // SI ES VARCHAR
		if ($dateB || $stringB){ //TODO: FICHAR OTRO TIPO DE STRING/DATE/ETC
			$fieldValue= "'" . $fieldValue . "'";
		}
				$pre = $pre . $fieldName . "=" . $fieldValue;
		if ($x+1<count($keys)){
			$pre = $pre . ',';
		}
	}
	return $pre . " WHERE " . $post;
}

function makeUpdateQueryByFields($entidad,$pars,$object,$fieldsObj){
	$pre="UPDATE " . $object . " SET ";
	$post="";
	$keys=array_keys($pars);
	for ($x=0;$x<count($keys);$x++){
		$fieldName=$entidad[$keys[$x]]["name"];
		$fieldValue=$pars[$fieldName];
		$dateB=(strstr($entidad[$keys[$x]]["type"], 'date')!=""); // SI ES DATE
		$stringB=(strstr($entidad[$keys[$x]]["type"], 'varchar')!=""); // SI ES VARCHAR
		if ($dateB || $stringB){ //TODO: FICHAR OTRO TIPO DE STRING/DATE/ETC
			$fieldValue= "'" . $fieldValue . "'";
		}
				$pre = $pre . $fieldName . "=" . $fieldValue;
		if ($x+1<count($keys)){
			$pre = $pre . ',';
		}
	}
	$keys=array_keys($fieldsObj);
	for ($x=0;$x<count($keys);$x++){
		$fieldName=$entidad[$keys[$x]]["name"];
		$fieldValue=$fieldsObj[$fieldName];
		$dateB=(strstr($entidad[$keys[$x]]["type"], 'date')!=""); // SI ES DATE
		$stringB=(strstr($entidad[$keys[$x]]["type"], 'varchar')!=""); // SI ES VARCHAR
		if ($dateB || $stringB){ //TODO: FICHAR OTRO TIPO DE STRING/DATE/ETC
			$fieldValue= "'" . $fieldValue . "'";
		}
				$post = $post . $fieldName . "=" . $fieldValue;
		if ($x+1<count($keys)){
			$post = $post . ' AND ';
		}
	}
	return $pre . " WHERE " . $post;
}

?>